
#if !defined (_MLMATH_H)
#define _MLMATH_H

#include <stdlib.h>
#include <math.h>

typedef unsigned int uint;

#include "mlVec2.h"
#include "mlVec3.h"
#include "mlVec4.h"

#include "mlVecX.h"

#include "mlQuat.h"

//#include "mlColor32.h"

namespace ml 
{
	typedef ml::VecX<short, 2> short2;
	typedef ml::VecX<short, 3> short3;
	typedef ml::VecX<short, 4> short4;

	typedef ml::VecX<int, 2> int2;
	typedef ml::VecX<int, 3> int3;
	typedef ml::VecX<int, 4> int4;

	typedef ml::VecX<uint, 2> uint2;
	typedef ml::VecX<uint, 3> uint3;
	typedef ml::VecX<uint, 4> uint4;

	typedef ml::VecX<double, 2> double2;
	typedef ml::VecX<double, 3> double3;
	typedef ml::VecX<double, 4> double4;


#define PI 3.14159265358979323846

#if !defined (EPSILON)
#define EPSILON 0.01f
#endif

//should be in the mVector3.cpp
//float vectorMag(const mVector3 &);
//float vectorMagSq(const mVector3 &);
//
//mVector3 crossProduct(const mVector3 &, const mVector3 &);
//float dotProduct(const mVector3 &, const mVector3 &);
//
//float distance(const mVector3 &, const mVector3 &);
//
//extern const mVector3 kZeroVector;
//

//mVector3 unproject(int x, int y);

}

#endif